package com.micro.school.order.service.impl;

import java.util.List;

import com.micro.school.order.domain.PayStudentFeePayment;
import com.micro.school.order.mapper.PayStudentFeePaymentMapper;
import com.micro.school.order.service.IPayFeeItemConfigService;

import com.micro.school.order.entity.PayStudentFeeItem;
import com.micro.school.order.mapper.PayStudentFeeItemMapper;
import com.micro.school.system.api.domain.vo.PayStudentFeePaymentDetailVos;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.micro.school.order.mapper.PayStudentFeePaymentDetailMapper;
import com.micro.school.order.domain.PayStudentFeePaymentDetail;
import com.micro.school.order.service.IPayStudentFeePaymentDetailService;

/**
 * 支付单明细Service业务层处理
 * 
 * @author lyb
 * @date 2025-08-19
 */
@Service
public class PayStudentFeePaymentDetailServiceImpl implements IPayStudentFeePaymentDetailService 
{
    @Autowired
    private PayStudentFeePaymentDetailMapper payStudentFeePaymentDetailMapper;

    @Autowired
    private PayStudentFeePaymentMapper payStudentFeePaymentMapper;

    @Autowired
    private PayStudentFeeItemMapper payStudentFeeItemMapper;

    /**
     * 查询支付单明细
     * 
     * @param id 支付单明细主键
     * @return 支付单明细
     */
    @Override
    public PayStudentFeePaymentDetail selectPayStudentFeePaymentDetailById(Integer id)
    {
        return payStudentFeePaymentDetailMapper.selectPayStudentFeePaymentDetailById(id);
    }

    /**
     * 查询支付单明细列表
     * 
     * @param payStudentFeePaymentDetail 支付单明细
     * @return 支付单明细
     */
    @Override
    public List<PayStudentFeePaymentDetail> selectPayStudentFeePaymentDetailList(PayStudentFeePaymentDetail payStudentFeePaymentDetail)
    {
        return payStudentFeePaymentDetailMapper.selectPayStudentFeePaymentDetailList(payStudentFeePaymentDetail);
    }

    /**
     * 新增支付单明细
     * 
     * @param payStudentFeePaymentDetail 支付单明细
     * @return 结果
     */
    @Override
    public int insertPayStudentFeePaymentDetail(PayStudentFeePaymentDetail payStudentFeePaymentDetail)
    {
        return payStudentFeePaymentDetailMapper.insertPayStudentFeePaymentDetail(payStudentFeePaymentDetail);
    }

    /**
     * 修改支付单明细
     * 
     * @param payStudentFeePaymentDetail 支付单明细
     * @return 结果
     */
    @Override
    public int updatePayStudentFeePaymentDetail(PayStudentFeePaymentDetail payStudentFeePaymentDetail)
    {
        return payStudentFeePaymentDetailMapper.updatePayStudentFeePaymentDetail(payStudentFeePaymentDetail);
    }

    /**
     * 批量删除支付单明细
     * 
     * @param ids 需要删除的支付单明细主键
     * @return 结果
     */
    @Override
    public int deletePayStudentFeePaymentDetailByIds(Integer[] ids)
    {
        return payStudentFeePaymentDetailMapper.deletePayStudentFeePaymentDetailByIds(ids);
    }

    /**
     * 删除支付单明细信息
     * 
     * @param id 支付单明细主键
     * @return 结果
     */
    @Override
    public int deletePayStudentFeePaymentDetailById(Integer id)
    {
        return payStudentFeePaymentDetailMapper.deletePayStudentFeePaymentDetailById(id);
    }

    /**
     * 查询支付单明细
     *
     * @param studentFeeItemId 支付单明细主键
     * @return 支付单明细
     */
    @Override
    public List<PayStudentFeePaymentDetail> selectPayStudentFeePaymentDetailByStudentFeeItemId(Integer studentFeeItemId){
        return payStudentFeePaymentDetailMapper.selectPayStudentFeePaymentDetailByStudentFeeItemId(studentFeeItemId);
    }

    /**
     * 支付明细
     */
    @Override
    public List<PayStudentFeePaymentDetail> selectPayStudentFeePaymentDetailByPaymentId(Integer paymentId){
        return payStudentFeePaymentDetailMapper.selectPayStudentFeePaymentDetailByPaymentId(paymentId);
    }

    @Override
    public int insertPayStudentFeePaymentDetailVos(PayStudentFeePaymentDetailVos payStudentFeePaymentDetail) {
        PayStudentFeePayment payStudentFeePayment = payStudentFeePaymentMapper.selectPayStudentFeePayment(payStudentFeePaymentDetail.getPayNo());
        payStudentFeePaymentDetail.setPaymentId(Long.valueOf(payStudentFeePayment.getId()));
        payStudentFeePaymentDetailMapper.insertPayStudentFeePaymentDetailVos(payStudentFeePaymentDetail);
        PayStudentFeeItem payStudentFeeItem = new PayStudentFeeItem();
        payStudentFeeItem.setId(payStudentFeePaymentDetail.getStudentFeeItemId());
        payStudentFeeItem.setPayNo(payStudentFeePaymentDetail.getPayNo());
        payStudentFeeItem.setPaymentId(Math.toIntExact(payStudentFeePaymentDetail.getPaymentId()));
        payStudentFeeItem.setPayStatus(Math.toIntExact(payStudentFeePaymentDetail.getPayStatus()));
        payStudentFeeItem.setItemQuantity(Math.toIntExact(payStudentFeePaymentDetail.getItemQuantity()));
        return payStudentFeeItemMapper.update(payStudentFeeItem);
    }
}
